package com.lrabbit.mybatisplus.generator.util;

import com.baomidou.mybatisplus.generator.config.FileOutConfig;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.lrabbit.mybatisplus.generator.bean.GenConfig;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

@Slf4j
public class TempUtil {
    public static List<FileOutConfig> initApiTemp(String apiOutputDir, String outputDir, GenConfig genConfig) {

        /************************ 【设置】xml 输入输出 ************************/
        List<FileOutConfig> fileOutConfigList = TempBootUtil.initBootTemp(outputDir, genConfig);

        /************************ 【设置】接口 API 输入输出 ************************/
        fileOutConfigList.add(new FileOutConfig("/templates/api.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 设置目录
                String entityName = tableInfo.getControllerName().replaceAll("Controller", "");
                return apiOutputDir + "/" + entityName + "Api.java";
            }
        });

        /************************ 【设置】VO 实体类 输入输出 ************************/
        fileOutConfigList.add(new FileOutConfig("/templates/vo.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 设置目录
                String entityName = tableInfo.getControllerName().replaceAll("Controller", "");
                return apiOutputDir + "/response/" + entityName + "VO.java";
            }
        });

        /************************ 【设置】request 实体类 输入输出 ************************/
        fileOutConfigList.add(new FileOutConfig("/templates/entityAddReq.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 设置目录
                String entityName = tableInfo.getControllerName().replaceAll("Controller", "");
                return apiOutputDir + "/request/" + entityName + "AddReq.java";
            }
        });
        fileOutConfigList.add(new FileOutConfig("/templates/entityPageReq.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 设置目录
                String entityName = tableInfo.getControllerName().replaceAll("Controller", "");
                return apiOutputDir + "/request/" + entityName + "PageReq.java";
            }
        });
        fileOutConfigList.add(new FileOutConfig("/templates/entityUpdateReq.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 设置目录
                String entityName = tableInfo.getControllerName().replaceAll("Controller", "");
                return apiOutputDir + "/request/" + entityName + "UpdateReq.java";
            }
        });
        fileOutConfigList.add(new FileOutConfig("/templates/entitySearchReq.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 设置目录
                String entityName = tableInfo.getControllerName().replaceAll("Controller", "");
                return apiOutputDir + "/request/" + entityName + "SearchReq.java";
            }
        });
        return fileOutConfigList;
    }
}
